package ec.linde.modulos.seguridades;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import ec.linde.persistencia.entidades.SeadUsuarios;

public class CredencialesUsuario implements Serializable{
	private static final long serialVersionUID = 1L;

	String account;
	String name;
	private Integer codigo;
	private Integer codigoEmpresa;
	private Integer codigoPersona;
	private Short codigoPerfil;
	private SeadUsuarios adUsuario;

	Set<String> roles = new HashSet<String>();

	public CredencialesUsuario(String account, String name, Integer codigo,
			Integer codigoPersona, Short codigoPerfil, SeadUsuarios adUsuario) {
		this.account = account;
		this.name = name;
		this.codigo = codigo;
		this.codigoPersona = codigoPersona;
		this.codigoPerfil = codigoPerfil;
		this.adUsuario = adUsuario;
	}

	public CredencialesUsuario(SeadUsuarios adUsuario) {

		this.adUsuario = adUsuario;
	}

	public CredencialesUsuario() {
		this.account = "anonymous";
		this.name = "Anonymous";
		roles.add("anonymous");
	}

	public boolean isAnonymous() {
		return hasRole("anonymous") || "anonymous".equals(account);
	}

	public String getAccount() {
		return account;
	}

	public void setAccount(String account) {
		this.account = account;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public boolean hasRole(String role) {
		return roles.contains(role);
	}

	public void addRole(String role) {
		roles.add(role);
	}

	/**
	 * @return the codigo
	 */
	public Integer getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo
	 *            the codigo to set
	 */
	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return the codigoEmpresa
	 */
	public Integer getCodigoEmpresa() {
		return codigoEmpresa;
	}

	/**
	 * @param codigoEmpresa
	 *            the codigoEmpresa to set
	 */
	public void setCodigoEmpresa(Integer codigoEmpresa) {
		this.codigoEmpresa = codigoEmpresa;
	}

	/**
	 * @return the codigoPersona
	 */
	public Integer getCodigoPersona() {
		return codigoPersona;
	}

	/**
	 * @param codigoPersona
	 *            the codigoPersona to set
	 */
	public void setCodigoPersona(Integer codigoPersona) {
		this.codigoPersona = codigoPersona;
	}

	/**
	 * @return the codigoPerfil
	 */
	public Short getCodigoPerfil() {
		return codigoPerfil;
	}

	/**
	 * @param codigoPerfil
	 *            the codigoPerfil to set
	 */
	public void setCodigoPerfil(Short codigoPerfil) {
		this.codigoPerfil = codigoPerfil;
	}

	/**
	 * @return the adUsuario
	 */
	public SeadUsuarios getAdUsuario() {
		return adUsuario;
	}

	/**
	 * @param adUsuario
	 *            the adUsuario to set
	 */
	public void setAdUsuario(SeadUsuarios adUsuario) {
		this.adUsuario = adUsuario;
	}
}
